{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "501041cc-0473-4971-bff9-fd6e92e1eae4",
        "showInput": false
      },
      "source": [
        "## High-Dimensional sample-efficient Bayesian Optimization with SAASBO\n",
        "\n",
        "This tutorial shows how to use the Sparse Axis-Aligned Subspace Bayesian Optimization (SAASBO) \n",
        "method for high-dimensional Bayesian optimization [1]. SAASBO places strong priors on the \n",
        "inverse lengthscales to avoid overfitting in high-dimensional spaces. Specifically, SAASBO \n",
        "uses a hierarchical sparsity prior consisting of a global shrinkage parameter \n",
        "$\\tau \\sim \\mathcal{HC}(\\beta)$ and inverse lengthscales $\\rho_d \\sim \\mathcal{HC}(\\tau)$ \n",
        "for $d=1, \\ldots, D$, where $\\mathcal{HC}$ is the half-Cauchy distribution. \n",
        "While half-Cauchy priors favor values near zero they also have heavy tails, which allows the \n",
        "inverse lengthscales of the most important parameters to escape zero. To perform inference in the \n",
        "SAAS model we use Hamiltonian Monte Carlo (HMC) as we found that to outperform MAP inference.\n",
        "\n",
        "We find that SAASBO performs well on problems with hundreds of dimensions. As we rely on HMC \n",
        "and in particular the No-U-Turn-Sampler (NUTS) for inference, the overhead of SAASBO scales \n",
        "cubically with the number of datapoints. Depending on the problem, using more than a few hundred\n",
        "evaluations may not be feasible as SAASBO is designed for problems with a limited evaluation budget.\n",
        "\n",
        "In general, we recommend using [Ax](https://ax.dev) for a simple BO setup like this one. See [here](https://ax.dev/docs/tutorials/saasbo.html) for a SAASBO tutorial in Ax, which uses the Log Noisy Expected Improvement acquisition function. Therefore, this tutorial shows a minimal illustrative example of how to use SAASBO with only BoTorch. To customize the acquisition function used with SAASBO in Ax, see the [custom acquisition tutorial](/docs/tutorials/custom_acquisition), where adding `\\\"surrogate\\\": Surrogate(SaasFullyBayesianSingleTaskGP),` to the `model_kwargs` of `BOTORCH_MODULAR` step is sufficient to enable the SAAS model.\n",
        "\n",
        "[1]: [D. Eriksson, M. Jankowiak. High-Dimensional Bayesian Optimization with Sparse Axis-Aligned Subspaces. Proceedings of the Thirty-Seventh Conference on Uncertainty in Artificial Intelligence, 2021.](https://proceedings.mlr.press/v161/eriksson21a.html)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# Install dependencies if we are running in colab\n",
        "import sys\n",
        "if 'google.colab' in sys.modules:\n",
        "    %pip install botorch"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "code_folding": [],
        "customOutput": null,
        "executionStartTime": 1668653404823,
        "executionStopTime": 1668653404909,
        "hidden_ranges": [],
        "originalKey": "26933c08-82d6-439d-9fcb-6e358b080ab6",
        "requestMsgId": "1806f0c7-d668-4248-a390-14add9bcb451"
      },
      "outputs": [],
      "source": [
        "import os\n",
        "\n",
        "import torch\n",
        "from torch.quasirandom import SobolEngine\n",
        "\n",
        "from botorch import fit_fully_bayesian_model_nuts\n",
        "from botorch.acquisition.logei import qLogExpectedImprovement\n",
        "from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP\n",
        "from botorch.models.transforms import Standardize\n",
        "from botorch.optim import optimize_acqf\n",
        "from botorch.test_functions import Branin\n",
        "\n",
        "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653405125,
        "executionStopTime": 1668653405130,
        "hidden_ranges": [],
        "originalKey": "f1e3c7f0-1afc-42e2-af59-5f5fae755ce5",
        "requestMsgId": "068ddee5-939e-4f5b-8210-2f6a490f6c4e",
        "showInput": true
      },
      "outputs": [],
      "source": [
        "tkwargs = {\n",
        "    \"device\": torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\"),\n",
        "    \"dtype\": torch.double,\n",
        "}"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "08a3d790-52a5-4821-af21-1040f1a037f0",
        "showInput": false
      },
      "source": [
        "The time to fit the SAAS model can be decreased by lowering\n",
        "`WARMUP_STEPS` and `NUM_SAMPLES`. \n",
        "\n",
        "We recommend using 512 warmup steps and 256 samples when\n",
        "possible and to not use fewer than 256 warmup steps and 128 samples. By default, we only\n",
        "keep each 16th sample which with 256 samples results in 32 hyperparameter samples.\n",
        "\n",
        "To make this tutorial run faster we use 256 warmup steps and 128 samples. "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653405353,
        "executionStopTime": 1668653405445,
        "originalKey": "363224de-347c-46a7-9c84-970cbb8e825d",
        "requestMsgId": "09e1ff1f-9c11-4053-8123-08aa3397dfc1",
        "showInput": true
      },
      "outputs": [],
      "source": [
        "WARMUP_STEPS = 256 if not SMOKE_TEST else 32\n",
        "NUM_SAMPLES = 128 if not SMOKE_TEST else 16\n",
        "THINNING = 16"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "af8beafd-352c-421d-8797-7660ddfa39f3",
        "showInput": false
      },
      "source": [
        "## Simple model fitting\n",
        "We generate a simple function that only depends on the first parameter and show that the SAAS\n",
        "model sets all other lengthscales to large values."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653405681,
        "executionStopTime": 1668653405771,
        "hidden_ranges": [],
        "originalKey": "f506aa6b-904c-4a7e-8a38-0443e983df06",
        "requestMsgId": "a6b6bfcd-c30c-4339-a342-02dd398a8274",
        "showInput": true
      },
      "outputs": [],
      "source": [
        "train_X = torch.rand(10, 4, **tkwargs)\n",
        "test_X = torch.rand(5, 4, **tkwargs)\n",
        "train_Y = torch.sin(train_X[:, :1])\n",
        "test_Y = torch.sin(test_X[:, :1])"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "cc9314b1-f255-4f7d-9f6d-eb349b34805e",
        "showInput": false
      },
      "source": [
        "By default, we infer the unknown noise variance in the data. You can also pass in a known \n",
        "noise variance (`train_Yvar`) for each observation, which may be useful in cases where you for example\n",
        "know that the problem is noise-free and can then set the noise variance to a small value such as `1e-6`.\n",
        "\n",
        "In this case you can construct a model as follows:\n",
        "```\n",
        "gp = SaasFullyBayesianSingleTaskGP(train_X=train_X, train_Y=train_Y, train_Yvar=torch.full_like(train_Y, 1e-6))\n",
        "```"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653406085,
        "executionStopTime": 1668653471282,
        "hidden_ranges": [],
        "originalKey": "148855fb-cf0c-4fc5-8431-06a5e61c5da5",
        "requestMsgId": "0c13f0b6-28b9-43ea-8d1b-00871e5e4f02",
        "showInput": true
      },
      "outputs": [],
      "source": [
        "gp = SaasFullyBayesianSingleTaskGP(\n",
        "    train_X=train_X,\n",
        "    train_Y=train_Y,\n",
        "    outcome_transform=Standardize(m=1)\n",
        ")\n",
        "fit_fully_bayesian_model_nuts(\n",
        "    gp,\n",
        "    warmup_steps=WARMUP_STEPS,\n",
        "    num_samples=NUM_SAMPLES,\n",
        "    thinning=THINNING,\n",
        "    disable_progbar=True,\n",
        ")\n",
        "with torch.no_grad():\n",
        "    posterior = gp.posterior(test_X)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "5f4fa168-2662-499b-ac82-3ab122dfe2ad",
        "showInput": false
      },
      "source": [
        "Computing the median lengthscales over the MCMC dimensions makes it clear that the first feature has the smallest lengthscale\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653471605,
        "executionStopTime": 1668653471693,
        "hidden_ranges": [],
        "originalKey": "44a1f7c0-9649-4d89-8226-0405fdf88518",
        "requestMsgId": "e815926b-5a2d-4b78-8b89-3c0720e45592",
        "showInput": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "tensor([ 2.6688, 19.3581, 30.6755, 26.3881], dtype=torch.float64)\n"
          ]
        }
      ],
      "source": [
        "print(gp.median_lengthscale.detach())"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "cf15a6ca-3377-40d1-9821-fad8f6600657",
        "showInput": false
      },
      "source": [
        "### Make predictions with the model\n",
        "\n",
        "In the next cell we show how to make predictions with the SAAS model. You compute the mean\n",
        "and variance for test points just like for any other BoTorch posteriors. Note that the mean \n",
        "and posterior will have an extra batch dimension at -3 that corresponds to the number of MCMC\n",
        "samples (which is 8 in this tutorial)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653471916,
        "executionStopTime": 1668653472023,
        "hidden_ranges": [],
        "originalKey": "898039a4-6ec8-46bd-a583-5a1614a3ccf6",
        "requestMsgId": "4328636f-fb02-44ee-8c48-842c3845297f",
        "showInput": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "torch.Size([8, 5, 1])\n",
            "torch.Size([8, 5, 1])\n"
          ]
        }
      ],
      "source": [
        "print(posterior.mean.shape)\n",
        "print(posterior.variance.shape)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "02b33f7f-4f31-432a-bac7-8cad1831e9a1",
        "showInput": false
      },
      "source": [
        "We also provide several convenience methods for computing different statistics over the MCMC samples:\n",
        "```\n",
        "mixture_mean = posterior.mixture_mean\n",
        "mixture_variance = posterior.mixture_variance\n",
        "mixture_quantile = posterior.quantile(q=0.95)\n",
        "```"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653472240,
        "executionStopTime": 1668653472326,
        "hidden_ranges": [],
        "originalKey": "b387d057-a497-401b-bfc2-ab427669c451",
        "requestMsgId": "64e0ee73-6ffd-4ad5-b9b2-bd9ea4e637ee",
        "showInput": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Ground truth:     tensor([0.1842, 0.3531, 0.6900, 0.2710, 0.6056], dtype=torch.float64)\n",
            "Mixture mean:     tensor([0.1837, 0.3490, 0.6888, 0.2658, 0.6045], dtype=torch.float64)\n"
          ]
        }
      ],
      "source": [
        "print(f\"Ground truth:     {test_Y.squeeze(-1)}\")\n",
        "print(f\"Mixture mean:     {posterior.mixture_mean.squeeze(-1)}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "executionStartTime": 1644277314184,
        "executionStopTime": 1644277314189,
        "hidden_ranges": [],
        "originalKey": "d9bec8be-2acd-40b8-aebb-612b62bbdfc3",
        "requestMsgId": "d9bec8be-2acd-40b8-aebb-612b62bbdfc3",
        "showInput": false
      },
      "source": [
        "## Optimize Branin embedded in a 30D space\n",
        "We take the standard 2D Branin problem and embed it in a 30D space. In particular,\n",
        "we let dimensions 0 and 1 correspond to the true dimensions. We will show that\n",
        "SAASBO is able to identify the important dimensions and efficiently optimize this function.\n",
        "We work with the domain $[0, 1]^d$ and unnormalize the inputs to the true domain of Branin \n",
        "before evaluating the function."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653472540,
        "executionStopTime": 1668653472545,
        "hidden_ranges": [],
        "originalKey": "15baa08e-ca35-4da7-a495-c63fe5d5779d",
        "requestMsgId": "6c3f8d91-9139-4c07-986f-77629b1887e5",
        "showInput": true
      },
      "outputs": [],
      "source": [
        "branin = Branin().to(**tkwargs)\n",
        "\n",
        "\n",
        "def branin_emb(x):\n",
        "    \"\"\"x is assumed to be in [0, 1]^d\"\"\"\n",
        "    lb, ub = branin.bounds\n",
        "    return branin(lb + (ub - lb) * x[..., :2])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653472768,
        "executionStopTime": 1668653472776,
        "hidden_ranges": [],
        "originalKey": "98b6936b-2f06-4d1f-82c0-2f1bd660d0b2",
        "requestMsgId": "1b5baaf2-e690-4b4d-9011-b6124e083410",
        "showInput": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Using a total of 50 function evaluations\n"
          ]
        }
      ],
      "source": [
        "DIM = 30 if not SMOKE_TEST else 2\n",
        "\n",
        "# Evaluation budget\n",
        "N_INIT = 10\n",
        "N_ITERATIONS = 8 if not SMOKE_TEST else 1\n",
        "BATCH_SIZE = 5 if not SMOKE_TEST else 1\n",
        "print(f\"Using a total of {N_INIT + BATCH_SIZE * N_ITERATIONS} function evaluations\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "27fd793f-18ee-49cb-9aa5-c8cd78b0b807",
        "showInput": false
      },
      "source": [
        "### Run the optimization\n",
        "We use 10 initial Sobol points followed by 8 iterations of BO using a batch size of 5, \n",
        "which results in a total of 50 function evaluations. As our goal is to minimize Branin, we flip\n",
        "the sign of the function values before fitting the SAAS model as the BoTorch acquisition\n",
        "functions assume maximization."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668653473096,
        "executionStopTime": 1668655621405,
        "hidden_ranges": [],
        "originalKey": "269287e0-500f-474d-891a-5439487e9a77",
        "requestMsgId": "5117b535-1fe7-40be-9f68-361db9d9b51b",
        "showInput": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Best initial point: 5.322\n",
            "3) New best: 2.028 @ [1.000, 0.181]\n",
            "4) New best: 2.019 @ [1.000, 0.219]\n",
            "5) New best: 0.866 @ [0.129, 0.762]\n",
            "6) New best: 0.415 @ [0.121, 0.831]\n",
            "8) New best: 0.398 @ [0.542, 0.153]\n"
          ]
        }
      ],
      "source": [
        "X = SobolEngine(dimension=DIM, scramble=True, seed=0).draw(N_INIT).to(**tkwargs)\n",
        "Y = branin_emb(X).unsqueeze(-1)\n",
        "print(f\"Best initial point: {Y.min().item():.3f}\")\n",
        "\n",
        "for i in range(N_ITERATIONS):\n",
        "    train_Y = -1 * Y  # Flip the sign since we want to minimize f(x)\n",
        "    gp = SaasFullyBayesianSingleTaskGP(\n",
        "        train_X=X,\n",
        "        train_Y=train_Y,\n",
        "        train_Yvar=torch.full_like(train_Y, 1e-6),\n",
        "        outcome_transform=Standardize(m=1),\n",
        "    )\n",
        "    fit_fully_bayesian_model_nuts(\n",
        "        gp,\n",
        "        warmup_steps=WARMUP_STEPS,\n",
        "        num_samples=NUM_SAMPLES,\n",
        "        thinning=THINNING,\n",
        "        disable_progbar=True,\n",
        "    )\n",
        "\n",
        "    EI = qLogExpectedImprovement(model=gp, best_f=train_Y.max())\n",
        "    candidates, acq_values = optimize_acqf(\n",
        "        EI,\n",
        "        bounds=torch.cat((torch.zeros(1, DIM), torch.ones(1, DIM))).to(**tkwargs),\n",
        "        q=BATCH_SIZE,\n",
        "        num_restarts=10,\n",
        "        raw_samples=1024,\n",
        "    )\n",
        "\n",
        "    Y_next = torch.cat([branin_emb(x).unsqueeze(-1) for x in candidates]).unsqueeze(-1)\n",
        "    if Y_next.min() < Y.min():\n",
        "        ind_best = Y_next.argmin()\n",
        "        x0, x1 = candidates[ind_best, :2].tolist()\n",
        "        print(\n",
        "            f\"{i + 1}) New best: {Y_next[ind_best].item():.3f} @ \"\n",
        "            f\"[{x0:.3f}, {x1:.3f}]\"\n",
        "        )\n",
        "    X = torch.cat((X, candidates))\n",
        "    Y = torch.cat((Y, Y_next))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "a9704a99-0712-40bb-a263-6798e0925291",
        "showInput": false
      },
      "source": [
        "## Plot the results\n",
        "\n",
        "We can see that we were able to get close to the global optimium of $\\approx 0.398$ after 50 function evaluations.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668655621761,
        "executionStopTime": 1668655621936,
        "hidden_ranges": [],
        "originalKey": "fd0d7aa7-8d55-4942-adc2-de356666ac84",
        "requestMsgId": "4024717d-fc5c-4939-90ce-fb24b3e06ea3",
        "showInput": true
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "\n",
        "%matplotlib inline\n",
        "\n",
        "Y_np = Y.cpu().numpy()\n",
        "fig, ax = plt.subplots(figsize=(8, 6))\n",
        "ax.plot(np.minimum.accumulate(Y_np), color=\"b\", label=\"SAASBO\")\n",
        "ax.plot([0, len(Y_np)], [0.398, 0.398], \"--\", c=\"g\", lw=3, label=\"Optimal value\")\n",
        "ax.grid(True)\n",
        "ax.set_title(f\"Branin, D = {DIM}\", fontsize=20)\n",
        "ax.set_xlabel(\"Number of evaluations\", fontsize=20)\n",
        "ax.set_xlim([0, len(Y_np)])\n",
        "ax.set_ylabel(\"Best value found\", fontsize=20)\n",
        "ax.set_ylim([0, 8])\n",
        "ax.legend(fontsize=18)\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "d81134ff-cec6-45cb-92bf-4170f428af40",
        "showInput": false
      },
      "source": [
        "## Predict on some test points\n",
        "We fit a model using the 50 datapoints collected by SAASBO and predict on 50 test \n",
        "points in order to see how well the SAAS model predicts out-of-sample.\n",
        "The plot shows the mean and a 95% confidence interval for each test point."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668655622271,
        "executionStopTime": 1668655822584,
        "hidden_ranges": [],
        "originalKey": "970977ea-ee5e-46eb-b500-683673ce723e",
        "requestMsgId": "2ae0c053-022f-4902-8bc5-b904bd85f90d",
        "showInput": true
      },
      "outputs": [],
      "source": [
        "train_X = SobolEngine(dimension=DIM, scramble=True, seed=0).draw(50).to(**tkwargs)\n",
        "test_X = SobolEngine(dimension=DIM, scramble=True, seed=1).draw(50).to(**tkwargs)\n",
        "train_Y = branin_emb(train_X).unsqueeze(-1)\n",
        "test_Y = branin_emb(test_X).unsqueeze(-1)\n",
        "\n",
        "gp = SaasFullyBayesianSingleTaskGP(\n",
        "    train_X=train_X,\n",
        "    train_Y=train_Y,\n",
        "    train_Yvar=torch.full_like(train_Y, 1e-6),\n",
        "    outcome_transform=Standardize(m=1),\n",
        ")\n",
        "fit_fully_bayesian_model_nuts(\n",
        "    gp,\n",
        "    warmup_steps=WARMUP_STEPS,\n",
        "    num_samples=NUM_SAMPLES,\n",
        "    thinning=THINNING,\n",
        "    disable_progbar=True,\n",
        ")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668655921184,
        "executionStopTime": 1668655921625,
        "hidden_ranges": [],
        "originalKey": "25139c91-a34c-4fa8-808f-70c1cf6952fd",
        "requestMsgId": "ad9413e7-09aa-47f5-b435-bf37cf0180d1",
        "showInput": true
      },
      "outputs": [],
      "source": [
        "with torch.no_grad():\n",
        "    posterior = gp.posterior(test_X)\n",
        "median = posterior.quantile(value=torch.tensor([0.5], **tkwargs))\n",
        "q1 = posterior.quantile(value=torch.tensor([0.025], **tkwargs))\n",
        "q2 = posterior.quantile(value=torch.tensor([0.975], **tkwargs))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668655923525,
        "executionStopTime": 1668655923743,
        "hidden_ranges": [],
        "originalKey": "39163b27-e252-4244-9712-f52503e00f74",
        "requestMsgId": "7c819fcc-5f74-48b1-9fd4-286839fdd0b6",
        "showInput": true
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "fig, ax = plt.subplots(1, 1, figsize=(8, 6))\n",
        "ax.plot([0, 80], [0, 80], \"b--\", lw=2)\n",
        "\n",
        "yerr1, yerr2 = median - q1, q2 - median\n",
        "yerr = torch.cat((yerr1.unsqueeze(0), yerr2.unsqueeze(0)), dim=0).squeeze(-1)\n",
        "markers, caps, bars = ax.errorbar(\n",
        "    test_Y.squeeze(-1).cpu().numpy(),\n",
        "    median.squeeze(-1).cpu().numpy(),\n",
        "    yerr=yerr.cpu().numpy(),\n",
        "    fmt=\".\",\n",
        "    capsize=4,\n",
        "    elinewidth=2.0,\n",
        "    ms=14,\n",
        "    c=\"k\",\n",
        "    ecolor=\"gray\",\n",
        ")\n",
        "ax.set_xlim([0, 80])\n",
        "ax.set_ylim([0, 80])\n",
        "[bar.set_alpha(0.8) for bar in bars]\n",
        "[cap.set_alpha(0.8) for cap in caps]\n",
        "ax.set_xlabel(\"True value\", fontsize=20)\n",
        "ax.set_ylabel(\"Predicted value\", fontsize=20)\n",
        "ax.set_aspect(\"equal\")\n",
        "ax.grid(True)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "hidden_ranges": [],
        "originalKey": "34e976cd-7d09-40d2-8987-aecdefa7c0fd",
        "requestMsgId": "34e976cd-7d09-40d2-8987-aecdefa7c0fd",
        "showInput": false
      },
      "source": [
        "## Look a the lengthscales from the final model\n",
        "\n",
        "As SAASBO places strong priors on the inverse lengthscales, we only expect parameters \n",
        "0 and 1 to be identified as important by the model since the other parameters have no effect.\n",
        "We can confirm that this is the case below as the lengthscales of parameters 0 and 1 are \n",
        "small with all other lengthscales being large."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "metadata": {
        "code_folding": [],
        "customInput": null,
        "customOutput": null,
        "executionStartTime": 1668655927129,
        "executionStopTime": 1668655927142,
        "hidden_ranges": [],
        "originalKey": "33147b57-ea6b-4c67-9c7d-796bb54d5c84",
        "requestMsgId": "b32e63df-16ee-45f1-af94-7f6f4bb78173",
        "showInput": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Parameter  0) Median lengthscale = 7.38e-01\n",
            "Parameter  1) Median lengthscale = 2.35e+00\n",
            "Parameter 12) Median lengthscale = 5.04e+02\n",
            "Parameter 29) Median lengthscale = 7.27e+02\n",
            "Parameter 27) Median lengthscale = 7.72e+02\n",
            "Parameter  7) Median lengthscale = 9.16e+02\n",
            "Parameter  3) Median lengthscale = 9.53e+02\n",
            "Parameter 16) Median lengthscale = 9.84e+02\n",
            "Parameter  8) Median lengthscale = 1.04e+03\n",
            "Parameter  9) Median lengthscale = 1.05e+03\n"
          ]
        }
      ],
      "source": [
        "median_lengthscales = gp.median_lengthscale\n",
        "for i in median_lengthscales.argsort()[:10]:\n",
        "    print(f\"Parameter {i:2}) Median lengthscale = {median_lengthscales[i].item():.2e}\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "metadata": {},
      "outputs": [],
      "source": []
    }
  ],
  "metadata": {
    "fileHeader": "",
    "kernelspec": {
      "display_name": "python3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.9.13"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 2
}
